package file

import "time"

// 定义一个抽象的File接口，隐藏底层操作系统的差异，提供统一的文件操作方法。

// 基础文件接口
type File interface {
	Read(p []byte) (n int, err error)
	Write(p []byte) (n int, err error)
	Seek(offset int64, whence int) (ret int64, err error)
	Close() error
	Stat() (FileInfo, error)
}

// 文件信息接口 FileInfo 接口抽象了文件元信息

type FileInfo interface {
	Name() string       // 文件名
	Size() int64        // 文件大小（字节）
	Mode() FileMode     // 文件模式（权限）
	ModTime() time.Time // 修改时间
	IsDir() bool        // 是否为目录
	Sys() interface{}   // 返回底层数据
}

// 文件系统抽象
type FileSystem interface {
	Open(name string) (File, error)
	Create(name string) (File, error)
	Stat(name string) (FileInfo, error)
	Remove(name string) error
	Mkdir(name string, perm FileMode) error
}

// FileMode 表示文件权限
type FileMode uint32
